<?php
/**
 * @name Bootstrap
 * @author Lenovo
 * @desc 所有在Bootstrap类中, 以_init开头的方法, 都会被Yaf调用,
 * @see http://www.php.net/manual/en/class.yaf-bootstrap-abstract.php
 * 这些方法, 都接受一个参数:Yaf_Dispatcher $dispatcher
 * 调用的次序, 和申明的次序相同
 */
class Bootstrap extends Yaf_Bootstrap_Abstract {

    public function _initConfig() {
		//把配置保存起来
		date_default_timezone_set('Asia/Shanghai');
		$arrConfig = Yaf_Application::app()->getConfig();
		//think-orm
		$dbconfig = $arrConfig['mysql']->toArray();
		Db::setConfig([
    		// 默认数据连接标识
		    'default'     => 'mysql',
		    // 数据库连接信息
		    'connections' => [
		        'mysql' => [
		            // 数据库类型
		            'type'     => 'mysql',
		            // 主机地址
		            'hostname' => $dbconfig['server'],
		            'database'    =>  $dbconfig['database_name'],
		            // 数据库用户名
		            'username'    =>  $dbconfig['username'],
		            // 数据库密码
		            'password'    =>  $dbconfig['password'],
		            // 数据库编码默认采用utf8
		            'charset'  =>  $dbconfig['charset'],
		            // 数据库表前缀
		            'prefix'   =>  $dbconfig['prefix'],
		            'port'    => $dbconfig['port'],
		            // 数据库调试模式
		            'debug'    => false,
		        ],
		    ],
		]);

		Yaf_Registry::set('config', $arrConfig);	    
	}

	public function _initCommonFunctions(){  
        Yaf_Loader::import(Yaf_Application::app()->getConfig()->application->directory . '/library/common.php');  
    } 

	public function _initPlugin(Yaf_Dispatcher $dispatcher) {
		//注册一个插件
		$objSamplePlugin = new SamplePlugin();
		$dispatcher->registerPlugin($objSamplePlugin);
	}

	public function _initRoute(Yaf_Dispatcher $dispatcher) {
		//在这里注册自己的路由协议,默认使用简单路由
		$router = Yaf_Dispatcher::getInstance()->getRouter();
        /**
         * 添加配置中的路由
         */
        $router->addConfig(Yaf_Registry::get("config")->routes);
	}
	
	public function _initView(Yaf_Dispatcher $dispatcher) {
		//在这里注册自己的view控制器，例如smarty,firekylin
		$req = new Yaf_Request_http();
		if(strpos($req->uri,'/api')==0){
			$dispatcher->disableView();
		}		
	}
}
